package com.niuke.asm.moni;

import java.util.Scanner;

/**
 * 回文日期
 */
public class HuiWenDataTest20 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt(); // 起始日期
        int b = scanner.nextInt(); // 终止日期
        scanner.close();
        int count = 0;
        // 遍历所有可能的回文日期
        // 8位回文日期的特点：前4位与后4位对称，如20211202
        // 因此只需遍历前4位，后4位由前4位反转得到
        int startYear = a / 10000;
        int endYear = b / 10000;
        for (int year = startYear; year <= endYear; year++) {
            // 生成回文日期
            int palindromeDate = generatePalindromeDate(year);
            // 检查是否在区间内
            if (palindromeDate >= a && palindromeDate <= b) {
                // 检查日期是否合法
                if (isValidDate(palindromeDate)) {
                    count++;
                }
            }
        }
        System.out.println(count);
    }
    /**
     * 根据年份生成可能的回文日期
     * 例如：年份2021，生成回文日期20211202
     */
    private static int generatePalindromeDate(int year) {
        // 将年份转为字符串
        String yearStr = String.format("%04d", year);
        // 反转年份字符串得到日期部分
        String reversedYear = new StringBuilder(yearStr).reverse().toString();
        // 组合成8位回文日期
        return Integer.parseInt(yearStr + reversedYear);
    }
    /**
     * 检查日期是否合法
     */
    private static boolean isValidDate(int date) {
        // 解析年、月、日
        int year = date / 10000;
        int month = (date % 10000) / 100;
        int day = date % 100;
        // 检查月份合法性
        if (month < 1 || month > 12) {
            return false;
        }
        // 检查日期合法性
        if (day < 1) {
            return false;
        }
        // 大月有31天
        if (month == 1 || month == 3 || month == 5 || month == 7
                || month == 8 || month == 10 || month == 12) {
            return day <= 31;
        }
        // 小月有30天
        else if (month == 4 || month == 6 || month == 9 || month == 11) {
            return day <= 30;
        }
        // 2月，考虑闰年
        else { // month == 2
            if (isLeapYear(year)) {
                return day <= 29;
            } else {
                return day <= 28;
            }
        }
    }
    /**
     * 判断是否为闰年
     * 能被4整除但不能被100整除，或能被400整除的年份是闰年
     */
    private static boolean isLeapYear(int year) {
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }
}
